import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 26727
 * Date: 2025-09-08
 * Time: 19:21
 */
public class TestCode3 {
        public static void main(String[] args) {
            int[] test1 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
            int[] test2 = {3, 3, 3, 3};
            int[] test3 = {1, 1, 1, 2, 2, 2};

            System.out.println("数组 " + Arrays.toString(test1) + " 能均分的最大份数: " + maxEqualSubarrays(test1));
            System.out.println("数组 " + Arrays.toString(test2) + " 能均分的最大份数: " + maxEqualSubarrays(test2));
            System.out.println("数组 " + Arrays.toString(test3) + " 能均分的最大份数: " + maxEqualSubarrays(test3));
        }

        public static int maxEqualSubarrays(int[] nums) {
            if (nums == null || nums.length == 0) {
                return 0;
            }

            // 计算数组总和
            int totalSum = 0;
            for (int num : nums) {
                totalSum += num;
            }

            // 从最大可能的份数开始检查（数组长度）
            for (int k = nums.length; k >= 1; k--) {
                // 如果总和不能被k整除，直接跳过
                if (totalSum % k != 0) {
                    continue;
                }

                // 每份的目标和
                int target = totalSum / k;
                int currentSum = 0;
                int count = 0;

                // 检查是否能分成k份，每份和为target
                for (int num : nums) {
                    currentSum += num;
                    if (currentSum == target) {
                        count++;
                        currentSum = 0;
                    } else if (currentSum > target) {
                        // 超过目标和，无法形成当前k份
                        break;
                    }
                }

                // 如果成功分成了k份，返回k
                if (count == k) {
                    return k;
                }
            }

            // 至少能分成1份（整个数组）
            return 1;
        }
}
